#include <iostream>
#include <cstdio>
using namespace std;
struct node{
	int id;
	int x,y;
	int parent;
	int flag;
};
int n,d;
node f[1200];
void init()
{
	for(int i=1;i<=n;i++)
	{
		f[i].parent=i;
		f[i].flag=0;
	}
}
int getf(int v)
{
	if(f[v].parent==v)
	return v;
	else{
		f[v].parent=getf(f[v].parent);
		return f[v].parent;
	}
}
void merge(int v,int u)
{
	int t1=getf(v),t2=getf(u);
	if(t1!=t2)
	{
		f[t2].parent=t1;
	}
}
 
int main()
{
	scanf("%d %d",&n,&d);
	init();
	for(int i=1;i<=n;i++)
	{
		scanf("%d %d",&f[i].x,&f[i].y);
	}
	char a[2];
	int b,c;
	while(~scanf("%s",a))
	{
		if(a[0]=='O')
		{scanf("%d",&b);	
			f[b].flag=1;
			for(int i=1;i<=n;i++)
			{
				if(f[i].flag==1&&i!=b &&((f[i].x-f[b].x)*(f[i].x-f[b].x)+(f[i].y-f[b].y)*(f[i].y-f[b].y))<=d*d  )
				{
				merge(i,b);}
			}
 
		}
		if(a[0]=='S')
		{	scanf("%d %d",&b,&c);
			if(getf(b)==getf(c)) printf("SUCCESS\n");
			else printf("FAIL\n");
		}
	}
	return 0;
	
}